using Concurso;
using Curriculum.Metadatos.ClasesMetadatos;
using Curriculum.Services;

namespace ConcursoCV.UI.WebUserControls.TipoLista
{
	using System;
	using System.Data;
	using System.Drawing;
	using System.Web;
	using System.Web.UI.WebControls;
	using System.Web.UI.HtmlControls;

	/// <summary>
	///		Summary description for ABMTipoLista.
	/// </summary>
	public class ABMTipoLista : System.Web.UI.UserControl
	{
		protected System.Web.UI.WebControls.Label lblTitulo;
		protected System.Web.UI.WebControls.ValidationSummary ValidationSummary1;
		protected System.Web.UI.WebControls.Button btnAceptar;
		protected System.Web.UI.WebControls.DropDownList ddlAntecedente;
		protected System.Web.UI.WebControls.DropDownList ddlAtributo;
		protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
		protected System.Web.UI.WebControls.Button btnCancelar;

		private const string pidListadoTipoLista = "016";
		private PageMode mode;
		protected System.Web.UI.WebControls.TextBox txtValor;
		private string itemListaValoresId = null;

		private void Page_Load(object sender, System.EventArgs e)
		{
			lblTitulo.Text = "Nuevo Item Lista";

			string id = this.Request["itemListaValoresId"];
			if ( id != null ) 
			{
				itemListaValoresId = id;			
			}

			string pMode = this.Request["PageMode"];
			mode = pMode != null ? PageModeConverter.ToEnum( pMode ) : PageMode.NEW;

			
			if (!this.IsPostBack) 
			{
				this.PopulateCombo();				

				if ( mode == PageMode.EDIT || mode == PageMode.VIEW ) 
				{
					CargaItemListaValoresAControles();
				}

				if ( mode == PageMode.EDIT )
				{
					lblTitulo.Text = "Modificar Item Lista";					
				} 				
				else if ( mode == PageMode.VIEW ) 
				{
					lblTitulo.Text = "Ver Item Lista";
					EnabledDisableControls(false);
				}
			}
		}

		private void EnabledDisableControls(bool enabled)
		{
			txtValor.Enabled = enabled;
			ddlAntecedente.Enabled = enabled;
			ddlAtributo.Enabled = enabled;
			btnAceptar.Enabled = enabled;
		}

		private void PopulateCombo()
		{
			PopulateComboAntecedente();
		}
		private void PopulateComboAntecedente()
		{
			VersionMetadatosService svc = new VersionMetadatosService();
			Helper.ListHelper.FillDropDownList( ddlAntecedente, "id", "nombre", svc.ObtenerAntecedentesMetadatoConAtributoTipoLista(), true );
		}

		private void PopulateComboAtributo()
		{
			if( ddlAntecedente.SelectedValue != "0" )
			{
				VersionMetadatosService svc = new VersionMetadatosService();
				Helper.ListHelper.FillDropDownList( ddlAtributo, "id", "nombre", svc.ObtenerAtributosTipoListaDeAntecedente(ddlAntecedente.SelectedValue), true );				
			}
			else
			{
				ddlAntecedente.Items.Clear();
			}
		}

		#region - Loads Methods -

		private void CargaItemListaValoresAControles()
		{
			VersionMetadatosService svc = new VersionMetadatosService();
			
			ItemListaValores itemListaValores = svc.ObtenerItemListaValores(itemListaValoresId);
			ddlAntecedente.SelectedValue = itemListaValores.AntecedenteMetadato.Id;

			PopulateComboAtributo();								
			ddlAtributo.SelectedValue = itemListaValores.AtributoMetadato.Id;
			txtValor.Text = itemListaValores.Valor;

		}

		private void CargarDatosAItemListaValores( ItemListaValores itemListaValores)
		{
			itemListaValores.Id = itemListaValoresId;
			itemListaValores.AntecedenteMetadato = (new VersionMetadatosService()).ObtenerAntecedenetMetadato( ddlAntecedente.SelectedValue );
			itemListaValores.AtributoMetadato = (new VersionMetadatosService()).ObtenerAtributoMetadato( ddlAtributo.SelectedValue );
			itemListaValores.Valor = txtValor.Text;
		}

		#endregion - Loads Methods -

		private void CrearItemListaValores(ItemListaValores itemListaValores) 
		{
			VersionMetadatosService service = new VersionMetadatosService();
			itemListaValoresId = (string) service.CrearItemListaValores(itemListaValores);
		}

		private void ModificarItemListaValores(ItemListaValores itemListaValores) 
		{
			VersionMetadatosService service = new VersionMetadatosService();
			itemListaValoresId = (string) service.ModificarItemListaValores(itemListaValores);		
		}
		private void SaveData()
		{
			if ( mode == PageMode.VIEW ) 
			{
				btnCancelar_Click(null, null);
				return;
			}

			ItemListaValores itemListaValores = new ItemListaValores();
			CargarDatosAItemListaValores(itemListaValores);
			
			// UPDATE
			if ( mode == PageMode.EDIT ) 
			{
				ModificarItemListaValores(itemListaValores);
			}
			else
			{
				if( mode == PageMode.NEW )
				{
					// CREATE
					CrearItemListaValores(itemListaValores);
				}
			}								
			RedirectToListadoTipoLista();			
		}

		private void RedirectToListadoTipoLista()
		{
			this.Server.Transfer("Default.aspx?pid=" + pidListadoTipoLista);			
		}


		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		///		Required method for Designer support - do not modify
		///		the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.ddlAntecedente.SelectedIndexChanged += new System.EventHandler(this.ddlAntecedente_SelectedIndexChanged);
			this.btnAceptar.Click += new System.EventHandler(this.btnAceptar_Click);
			this.btnCancelar.Click += new System.EventHandler(this.btnCancelar_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void btnAceptar_Click(object sender, System.EventArgs e)
		{
			SaveData();
		}

		private void btnCancelar_Click(object sender, System.EventArgs e)
		{
			RedirectToListadoTipoLista();
		}

		private void ddlAntecedente_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			this.PopulateComboAtributo();
		}
	}
}
